home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Gold Collection
/
Software Vault - The Gold Collection (American Databankers) (1993).ISO
/
cdr35
/
qwkblt12.zip
/
QWK-BLT.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1993-05-27
|
4KB
|
297 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 1.OO (plain) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Boolean BOOLEAN003
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
Integer INTEGER012
Integer INTEGER013
String STRING001
String STRING002
String STRING003
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
;------------------------------------------------------------------------------
STRING003 = ""
INTEGER002 = 0
INTEGER004 = 1
INTEGER006 = 1
STRING004 = GetToken()
While (STRING004 <> "") Do
If (Left(Upper(STRING004), 1) == "B") Then
INTEGER002 = Or(INTEGER002, 1)
Else
STRING003 = STRING003 + STRING004
Endif
If (Left(Upper(STRING004), 1) == "D") INTEGER002 = Or(INTEGER002, 2)
STRING004 = GetToken()
EndWhile
If (INTEGER002 <> 3) Goto LABEL013
GetUser
STRING001 = ReadLine(PCBDat(), 31)
STRING002 = Trim(ReadLine(STRING001, 25), " ")
If ((STRING002 == "") || (Left(STRING002, 1) == " ")) Goto LABEL013
If (Exist(STRING002)) Then
If (Exist(PPEPath() + PPEName() + ".cfg")) Then
BOOLEAN002 = 1
STRING007 = ""
STRING007 = ReadLine(PPEPath() + PPEName() + ".cfg", 1)
Goto LABEL001
Endif
BOOLEAN002 = 0
:LABEL001
INTEGER005 = FileInf(STRING002, 4) / 30
Gosub LABEL005
INTEGER001 = RegAX()
If (BOOLEAN001) Goto LABEL013
DispStr "@X0FScanning Bulletins "
If (BOOLEAN002) Then
While ((INTEGER004 <= Len(STRING007)) && (INTEGER004 <= INTEGER005)) Do
If (Mid(STRING007, INTEGER004, 1) <> "Y") Goto LABEL002
If (INTEGER006 <> INTEGER004 - 1) Gosub LABEL007
DispStr "."
Gosub LABEL006
Gosub LABEL009
:LABEL002
Inc INTEGER004
EndWhile
Goto LABEL004
Endif
While (INTEGER004 <= INTEGER005) Do
If (And(INTEGER004, 1) == 1) DispStr "."
Gosub LABEL006
Gosub LABEL009
:LABEL003
Inc INTEGER004
EndWhile
:LABEL004
Gosub LABEL008
DispStr Chr(13)
Goto LABEL013
:LABEL005
VarSeg STRING002, INTEGER013
VarOff STRING002, INTEGER012
INTEGER009 = 15648
DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
INTEGER001 = RegAX()
BOOLEAN001 = RegCF()
Return
:LABEL006
STRING008 = " "
INTEGER010 = INTEGER001
INTEGER009 = 16128
INTEGER011 = Len(STRING008)
VarSeg STRING008, INTEGER013
VarOff STRING008, INTEGER012
DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
BOOLEAN001 = RegCF()
If (BOOLEAN001 || (RegAX() == 0)) STRING008 = ""
INTEGER006 = INTEGER004
Return
:LABEL007
INTEGER010 = INTEGER001
INTEGER009 = 16896
INTEGER012 = (30 * (INTEGER004 - 1)) % 4096
INTEGER011 = (30 * (INTEGER004 - 1)) / 4096
DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
BOOLEAN001 = RegCF()
Return
:LABEL008
INTEGER010 = INTEGER001
INTEGER009 = 15872
DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
BOOLEAN001 = RegCF()
Return
Inc INTEGER004
If (And(INTEGER004, 1) == 1) DispStr "."
Return
:LABEL009
STRING005 = Trim(STRING008, " ")
If (STRING008 == "") Goto LABEL003
If (!Exist(STRING005)) Goto LABEL003
If (FileInf(STRING005, 4) == 0) Goto LABEL003
INTEGER003 = 0
If (FileInf(STRING005, 2) >= U_LDate()) INTEGER003 = Or(INTEGER003, 1)
If (FileInf(STRING005, 3) > U_LTime()) INTEGER003 = Or(INTEGER003, 2)
If (INTEGER003 == 3) Then
STRING006 = TempPath() + FileInf(STRING005, 8) + FileInf(STRING005, 9)
Gosub LABEL010
Endif
Return
:LABEL010
VarSeg STRING005, INTEGER013
VarOff STRING005, INTEGER012
INTEGER009 = 15648
DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
If (RegCF()) Goto LABEL012
INTEGER007 = RegAX()
VarSeg STRING006, INTEGER013
VarOff STRING006, INTEGER012
INTEGER009 = 15360
INTEGER011 = 0
DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
If (RegCF()) Then
INTEGER010 = INTEGER007
DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
Goto LABEL012
Endif
INTEGER008 = RegAX()
STRING009 = " "
STRING009 = STRING009 + STRING009
STRING009 = STRING009 + STRING009
INTEGER010 = INTEGER007
INTEGER011 = Len(STRING009)
VarSeg STRING009, INTEGER013
VarOff STRING009, INTEGER012
INTEGER009 = 16128
DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
If (RegCF() || (RegAX() == 0)) Then
BOOLEAN003 = 0
Goto LABEL011
Endif
BOOLEAN003 = 1
:LABEL011
While (BOOLEAN003) Do
INTEGER010 = INTEGER008
INTEGER011 = RegAX()
INTEGER009 = 16384
DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
INTEGER010 = INTEGER007
INTEGER011 = Len(STRING009)
INTEGER009 = 16128
DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
If (RegCF() || (RegAX() == 0)) BOOLEAN003 = 0
EndWhile
INTEGER010 = INTEGER008
INTEGER009 = 15872
DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
INTEGER010 = INTEGER007
INTEGER009 = 15872
DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
:LABEL012
Return
Endif
:LABEL013
KbdStuff "qwk " + STRING003 + Chr(13)
End
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 1 End
; 29 Goto
; 65 Let
; 27 If
; 1 GetUser
; 8 Gosub
; 7 Return
; 3 Inc
; 1 KbdStuff
; 5 DispStr
; 12 DoIntr
; 5 VarSeg
; 5 VarOff
;
;
; ■ Functions used :
;
; 2 *
; 2 /
; 1 %
; 11 +
; 3 -
; 12 ==
; 4 <>
; 3 <=
; 1 >
; 1 >=
; 12 !
; 1 &&
; 4 ||
; 4 Len(
; 2 Upper()
; 1 Mid()
; 3 Left()
; 2 Chr()
; 2 Trim()
; 1 U_LDate()
; 1 U_LTime()
; 1 PCBDat()
; 2 PPEPath()
; 3 ReadLine()
; 2 GetToken()
; 8 RegAX()
; 8 RegCF()
; 3 Exist()
; 2 And()
; 4 Or()
; 6 FileInf()
; 2 PPEName()
; 1 TempPath()
;
;------------------------------------------------------------------------------
;
; Analysis flags : Id
;
; I - Interrupt call ■ 5
; This is rare in PPE... Although it may be a way to replace a PPE
; command by its fast interrupt equivalent. Be aware that an
; interrupt call may do anything... nasty (formating HD, rebooting,...)
; or usefull (fast screen i/o, hardware ressource access,...). Check!
; ■ Search for : DOINTR
;
; d - Access PCBOARD.DAT ■ 2
; Program gets the full pathname to PCBOARD.DAT, this may be usefull
; for many PPE so they can find various informations on the system
; (system paths, max number of lines in messages, ...) but it may also
; be a way to gather vital informations.
; ■ Search for : PCBDAT()
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 0 For/Next
; 4 While/EndWhile
; 7 If/Then or If/Then/Else
; 0 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------